"""
paramiko模块

作用：实现ssh功能
1、执行远程命令
2、文件上传、下载   scp
"""
import paramiko
import os
src_file=r"E:\python\函数应用\04_函数返回值.py"
server_dir = "/opt/"
# 获取文件名
os.path.basename(src_file)
# 获取server端目录是否以/结尾
server_dir.endswith("/")


# 执行远程命令
def execCmd():
    # 创建客户端
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
    ssh_client.connect(hostname="192.168.189.141",username="root",password="123456",port=22)

    # 按顺序返回三个文件，标准输入，标准输出，标准错误输出
    stdin,stdout,stderr = ssh_client.exec_command("free -m")
    result = stdout.read().decode(encoding="UTF-8")
    print(result)

    ssh_client.close()


# 上传、下载文件
def upload():
    # 创建远程服务ssh连接，元组的方式传递连接信息
    ssh_conn = paramiko.Transport(("192.168.189.141",22))
    ssh_conn.connect(username="root",password="123456")

    # 基于ssh连接创建FTP客户端
    sftp = paramiko.SFTPClient.from_transport(ssh_conn)

    # 上传、下载文件
    # 目的文件必须是完整路径
    # sftp.put("源文件","目的文件")
    sftp.put(r"E:\python\函数应用\02-模块.py","/tmp/02-模块.py")

    #sftp.get("源文件","目的文件（必须写完整路径）")
    sftp.get("/root/file01.txt",r"E:\python\函数应用\file01.txt")

    sftp.close()
    ssh_conn.close()
if __name__ == '__main__':
    upload()